package com.idea.dsl.model;

import lombok.Data;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.util.Map;
import java.util.List;

/**
 * DSL生成请求模型
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DslRequest {
    
    /**
     * 需求描述
     */
    @NotBlank(message = "需求描述不能为空")
    private String description;
    
    /**
     * DSL类型 (sql, json, yaml, xml, custom等)
     */
    @NotBlank(message = "DSL类型不能为空")
    private String dslType;
    
    /**
     * 使用的模型 (openai, claude, local等)
     */
    private String model;
    
    /**
     * 模板名称
     */
    private String template;
    
    /**
     * 上下文信息
     */
    private Map<String, Object> context;
    
    /**
     * 示例数据
     */
    private List<String> examples;
    
    /**
     * 生成参数
     */
    private GenerationParams params;
    
    /**
     * 生成参数
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class GenerationParams {
        /**
         * 最大token数
         */
        private Integer maxTokens;
        
        /**
         * 温度参数 (0.0-1.0)
         */
        private Double temperature;
        
        /**
         * 是否需要验证
         */
        private Boolean validate;
        
        /**
         * 输出格式
         */
        private String outputFormat;
    }
}
